     SOA has long been criticized for its heavily reliance on XML and the performance woes this causes. XML is used as a standardized, easy to use format for passing data between services. It is formed like HTML and easily human-readable, but requires significantly more time to parse than binary formats. This is because XML files are traditionally transformed into in-memory trees, called DOM trees, representing the tag structure of the file. This DOM tree can be traversed quickly and efficiently, allowing fast access to data in the file. However, the operation of transforming the XML file to the DOM tree, called parsing, can be a slow process and it often limits application speed when processing large volumes of XML messages. This is because parsing causes significant object allocation while building the tree. Fortunately, many modern XML parsers feature significant optimizations regarding object allocation, reducing the impact of this problem on processing speed. \cite{zhang}

	The use of XML in service-oriented architectures is also criticized for the large bandwidth required to transmit files (sometimes 5-10 times more than flat binary files \cite{zhang}). XML files also use proportionally more disk space than denser file formats because they have a large space overhead due to the use of tags for document structure. As bandwidth and storage availability continues to grow, these two issues will become smaller and smaller.